/*
 * Copyright (C) 2016 yixun All Rights Reserved.
 * 
 * SignedMapper.java
 */
package com.emm.yixun.basic.mapper;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.emm.yixun.common.model.Signed;
import com.emm.yixun.common.model.SignedInfo;
import com.emm.yixun.common.model.dto.SignedDto;

/**
 * [文件名称]<br>
 * SignedMapper.java<br>
 * <br>
 * [文件描述]<br>
 * 客户签约表 mapper<br>
 * <br>
 * [修改记录]<br>
 * 2016-05-11 16:27:09 创建<br>
 * 
 * @version 1.00
 */
public interface SignedMapper {

	/**
	 * 新增
	 * 
	 * @param signed
	 *            新增BEAN信息
	 * @return 操作行数
	 */
	public int add(Signed signed);

	/**
	 * 删除
	 * 
	 * @param signedDto
	 *            满足删除的条件
	 * @return 操作行数
	 */
	public int del(SignedDto signedDto);

	/**
	 * 删除
	 * 
	 * @param ids
	 *            待删除的唯一主键拼接的字符串,主键间以,隔开
	 * @return 操作行数
	 */
	public int dels(String ids);

	/**
	 * 编辑
	 * 
	 * @param signed
	 *            需要编辑的BEAN信息
	 */
	public int edit(Signed signed);

	/**
	 * 编辑
	 * 
	 * @param signedDto
	 *            需要编辑的BEAN信息
	 * @param ids
	 *            待编辑的唯一主键拼接的字符串,主键间以,隔开
	 * @return 更新行数
	 */
	public int edits(@Param("signedDto") Signed signed, @Param("ids") String ids);

	/**
	 * 搜索总数
	 * 
	 * @param signedDto
	 *            搜索条件
	 * @return 符合条件记录总数
	 */
	public int count(SignedDto signedDto);

	/**
	 * 搜索 - 支持分页
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @param beginNum
	 *            分页开始页不包含
	 * @param endNum
	 *            分页结束页不包含
	 * @return 分页数据
	 */
	public List<Signed> list(@Param("signedDto") SignedDto signedDto, @Param("beginNum") int beginNum,
			@Param("endNum") int endNum);

	/**
	 * 搜索总数
	 * 
	 * @param signedDto
	 *            搜索条件
	 * @return 符合条件记录总数
	 */
	public int countDto(SignedDto signedDto);

	/**
	 * 搜索 - 支持分页
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @param beginNum
	 *            分页开始页不包含
	 * @param endNum
	 *            分页结束页不包含
	 * @return 分页数据
	 */
	public List<SignedDto> listDto(@Param("signedDto") SignedDto signedDto, @Param("beginNum") int beginNum,
			@Param("endNum") int endNum);

	/**
	 * 搜索总数
	 * 
	 * @param signedDto
	 *            搜索条件
	 * @return 符合条件记录总数
	 */
	public int selectCountDto(SignedDto signedDto);

	/**
	 * 搜索 - 支持分页
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @param beginNum
	 *            分页开始页不包含
	 * @param endNum
	 *            分页结束页不包含
	 * @return 分页数据
	 */
	public List<SignedDto> selectListDto(@Param("signedDto") SignedDto signedDto, @Param("beginNum") int beginNum,
			@Param("endNum") int endNum);
	
	/**
	 * 搜索 - 支持分页
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @param beginNum
	 *            分页开始页不包含
	 * @param endNum
	 *            分页结束页不包含
	 * @return 分页数据
	 */
	public List<SignedDto> selectAllDto(@Param("signedDto") SignedDto signedDto);

	/**
	 * 搜索
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<Signed> selectListByDto(@Param("signedDto") SignedDto signedDto);

	/**
	 * 搜索
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<Signed> selectEntityList();

	/**
	 * 搜索 - 支持分页
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public Signed selectByDto(@Param("signedDto") SignedDto signedDto);

	/**
	 * @param id
	 * @return 根据id查询记录
	 */
	public Signed selectById(@Param("id") Long id);

	/**
	 * 搜索 - 支持分页
	 * 
	 * @param blackWhiteList
	 *            blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public SignedDto selectChangeSignedByDto(@Param("signedDto") SignedDto signedDto);

	public SignedDto selectSignedCustomer(@Param("id") Long id);

	public SignedInfo totalNumberAndAmount(@Param("signedDto") SignedDto signedDto);
	
	/**
	 * 搜索总数
	 * 
	 * @param customerId
	 *            搜索条件
	 * @return 符合条件记录总数
	 */
	public int getCountByCustomerId(@Param("customerId")String customerId);

	/**
	 * 搜索 - 支持分页
	 * 
	 * @param customerId
	 * 
	 * @param beginNum
	 *            分页开始页不包含
	 * @param endNum
	 *            分页结束页不包含
	 * @return 分页数据
	 */
	public List<SignedDto> getListByCustomerId(@Param("customerId")String customerId, @Param("beginNum") int beginNum,
			@Param("endNum") int endNum);

	public Date findMaxSignedCheckDate(@Param("projectId") Long projectId,@Param("industMark") String industMark);
	
	/**
	 * 根据房间ID查询客户姓名和经纪人
	 * @param roomId
	 * @return 
	 */
	public SignedDto getCustomerByRoomId(@Param("roomId")Long roomId);
}
